export default {
  common: {
    welcome: 'Bienvenue dans le système d\'administration',
    login: 'Connexion',
    logout: 'Déconnexion',
    confirm: 'Confirmer',
    cancel: 'Annuler',
    save: 'Enregistrer',
    edit: 'Modifier',
    delete: 'Supprimer',
    search: 'Rechercher',
    reset: 'Réinitialiser',
    upload: 'Télécharger',
    download: 'Télécharger',
    add: 'Ajouter',
    view: 'Voir',
    operation: 'Opération',
    back: 'Retour',
    submit: 'Soumettre',
    total: 'Total {total} éléments',
    action: 'Action',
    refresh: 'Actualiser',
    batchDelete: 'Suppression par lots',
    noSelection: 'Veuillez sélectionner au moins un élément',
    totalItems: 'Total {total} éléments',
    selectedItems: 'Sélectionné {count} éléments',
    startDate: 'Date de début',
    endDate: 'Date de fin',
    enabled: 'Activé',
    disabled: 'Désactivé',
    remark: 'Remarque',
    remarkPlaceholder: 'Veuillez saisir une remarque',
    createTime: 'Date de création',
    updateTime: 'Date de mise à jour',
    pagination: {
      total: 'Total',
      items: 'éléments',
      pageSize: '{size} éléments/page',
      current: 'Page {current}',
      totalItems: 'Total {total} éléments',
      goTo: 'Aller à',
      page: 'page'
    },
    table: {
      emptyText: 'Aucune donnée',
      loadingText: 'Chargement...',
      selectAll: 'Tout sélectionner',
      selectInvert: 'Inverser la sélection',
      selectNone: 'Effacer la sélection',
      selectRow: 'Sélectionner la ligne',
      selectRows: '{count} éléments sélectionnés',
      noData: 'Aucune donnée',
      loading: 'Chargement...',
      error: 'Échec du chargement',
      retry: 'Réessayer',
      filterTitle: 'Filtre',
      filterConfirm: 'Confirmer',
      filterReset: 'Réinitialiser',
      filterEmptyText: 'Aucun filtre',
      filterSearchPlaceholder: 'Rechercher par mot-clé',
      filterCheckAll: 'Tout sélectionner',
      filterCheckInvert: 'Inverser la sélection',
      filterCheckNone: 'Effacer la sélection',
      filterCheckRow: 'Sélectionner la ligne',
      filterCheckRows: '{count} éléments sélectionnés'
    },
    dateRange: 'Plage de dates',
    yes: 'Oui',
    no: 'Non',
    loading: 'Chargement...',
    reload: 'Recharger',
    fetchFailed: 'Échec de la récupération des données',
    createSuccess: 'Créé avec succès',
    updateSuccess: 'Mis à jour avec succès',
    createFailed: 'Échec de la création',
    updateFailed: 'Échec de la mise à jour',
    deleteSuccess: 'Supprimé avec succès',
    deleteFailed: 'Échec de la suppression',
    batchDeleteSuccess: 'Suppression par lots réussie',
    operationFailed: 'Échec de l\'opération',
    statusChangeSuccess: 'Statut modifié avec succès',
    statusChangeFailed: 'Échec de la modification du statut',
    success: 'Succès',
  },
  layout: {
    sidebarCollapse: 'Réduire la barre latérale',
    sidebarExpand: 'Développer la barre latérale',
    settings: 'Paramètres',
    language: 'Langue',
    notification: 'Notification',
    profile: 'Profil',
    fullscreen: 'Plein écran',
    exitFullscreen: 'Quitter le plein écran',
    breadcrumbHome: 'Accueil',
    breadcrumbSeparator: '/',
    breadcrumbCurrent: 'Page actuelle',
    menuCollapse: 'Réduire le menu',
    menuExpand: 'Développer le menu',
    menuSearch: 'Rechercher dans le menu',
    menuSearchPlaceholder: 'Rechercher un menu...',
    menuSearchNoResult: 'Aucun résultat trouvé',
    menuSearchLoading: 'Recherche en cours...',
    menuSearchError: 'Erreur de recherche',
    menuSearchClear: 'Effacer la recherche',
    menuSearchHistory: 'Historique de recherche',
    menuSearchHistoryClear: 'Effacer l\'historique',
    menuSearchHistoryEmpty: 'Aucun historique',
    menuSearchHistoryTitle: 'Historique de recherche',
    menuSearchHistoryItem: '{text}',
    menuSearchHistoryDelete: 'Supprimer',
    menuSearchHistoryDeleteAll: 'Tout supprimer',
    menuSearchHistoryDeleteConfirm: 'Êtes-vous sûr de vouloir supprimer cet historique?',
    menuSearchHistoryDeleteAllConfirm: 'Êtes-vous sûr de vouloir supprimer tout l\'historique?',
    menuSearchHistoryDeleteSuccess: 'Historique supprimé avec succès',
    menuSearchHistoryDeleteFailed: 'Échec de la suppression de l\'historique',
    menuSearchHistoryDeleteAllSuccess: 'Tout l\'historique supprimé avec succès',
    menuSearchHistoryDeleteAllFailed: 'Échec de la suppression de tout l\'historique',
    menuSearchHistoryMax: 'L\'historique ne peut pas dépasser {max} éléments',
    menuSearchHistoryAdd: 'Ajouter à l\'historique',
    menuSearchHistoryAddSuccess: 'Ajouté à l\'historique avec succès',
    menuSearchHistoryAddFailed: 'Échec de l\'ajout à l\'historique',
    menuSearchHistoryUpdate: 'Mettre à jour l\'historique',
    menuSearchHistoryUpdateSuccess: 'Historique mis à jour avec succès',
    menuSearchHistoryUpdateFailed: 'Échec de la mise à jour de l\'historique',
    menuSearchHistoryClearSuccess: 'Historique effacé avec succès',
    menuSearchHistoryClearFailed: 'Échec de l\'effacement de l\'historique',
    menuSearchHistoryLoad: 'Charger l\'historique',
    menuSearchHistoryLoadSuccess: 'Historique chargé avec succès',
    menuSearchHistoryLoadFailed: 'Échec du chargement de l\'historique',
    menuSearchHistorySave: 'Enregistrer l\'historique',
    menuSearchHistorySaveSuccess: 'Historique enregistré avec succès',
    menuSearchHistorySaveFailed: 'Échec de l\'enregistrement de l\'historique'
  },
  theme: {
    title: 'Paramètres du thème',
    switchTheme: 'Changer de thème',
    themeColor: 'Couleur du thème',
    darkMode: 'Mode sombre',
    lightMode: 'Mode clair',
    primaryColor: 'Couleur principale',
    successColor: 'Couleur de succès',
    warningColor: 'Couleur d\'avertissement',
    errorColor: 'Couleur d\'erreur',
    infoColor: 'Couleur d\'information',
    fontSize: 'Taille de police',
    small: 'Petit',
    medium: 'Moyen',
    large: 'Grand',
    layout: 'Mise en page',
    header: 'En-tête',
    sidebar: 'Barre latérale',
    footer: 'Pied de page',
    fixedHeader: 'En-tête fixe',
    fixedSidebar: 'Barre latérale fixe',
    fixedFooter: 'Pied de page fixe',
    showBreadcrumb: 'Afficher le fil d\'Ariane',
    showTags: 'Afficher les étiquettes',
    showLogo: 'Afficher le logo',
    showFooter: 'Afficher le pied de page',
    themeSettings: 'Paramètres du thème',
    saveSettings: 'Enregistrer les paramètres',
    resetSettings: 'Réinitialiser les paramètres',
    saveSuccess: 'Paramètres enregistrés avec succès',
    saveFailed: 'Échec de l\'enregistrement des paramètres',
    resetSuccess: 'Paramètres réinitialisés avec succès',
    resetFailed: 'Échec de la réinitialisation des paramètres',
    confirmReset: 'Êtes-vous sûr de vouloir réinitialiser tous les paramètres?',
    customTheme: 'Thème personnalisé',
    presetTheme: 'Thème prédéfini',
    colorPicker: 'Sélecteur de couleur',
    colorPickerPlaceholder: 'Sélectionner une couleur',
    layoutSettings: 'Paramètres de mise en page',
    navigationMode: 'Mode de navigation',
    navigationModeTop: 'Navigation supérieure',
    navigationModeSide: 'Navigation latérale',
    navigationModeMix: 'Navigation mixte',
    contentWidth: 'Largeur du contenu',
    contentWidthFluid: 'Fluide',
    contentWidthFixed: 'Fixée',
    sidebarWidth: 'Largeur de la barre latérale',
    sidebarCollapsed: 'Barre latérale réduite',
    sidebarHidden: 'Barre latérale masquée',
    headerHeight: 'Hauteur de l\'en-tête',
    footerHeight: 'Hauteur du pied de page',
    tagHeight: 'Hauteur des étiquettes',
    breadcrumbHeight: 'Hauteur du fil d\'Ariane'
  },
  login: {
    title: 'Connexion',
    username: 'Nom d\'utilisateur',
    password: 'Mot de passe',
    rememberMe: 'Se souvenir de moi',
    forgotPassword: 'Mot de passe oublié',
    login: 'Connexion',
    loginSuccess: 'Connexion réussie',
    usernamePlaceholder: 'Veuillez entrer votre nom d\'utilisateur',
    passwordPlaceholder: 'Veuillez entrer votre mot de passe',
    usernameRequired: 'Le nom d\'utilisateur est requis',
    passwordRequired: 'Le mot de passe est requis',
    loginFailed: 'Nom d\'utilisateur ou mot de passe invalide',
    usernameLength: 'Le nom d\'utilisateur doit contenir entre 4 et 20 caractères',
    passwordLength: 'Le mot de passe doit contenir entre 6 et 20 caractères',
  },
  menu: {
    dashboard: 'Tableau de bord',
    system: {
      title: 'Système',
      user: 'Utilisateur',
      role: 'Rôle',
      menu: 'Menu',
      dept: 'Département',
    },
    config: {
      title: 'Configuration',
      dict: 'Dictionnaire',
      setting: 'Paramètres',
    },
    file: {
      title: 'Fichier',
    },
    notification: {
      title: 'Notification',
    },
    log: {
      title: 'Journaux',
      operationLog: 'Journal des opérations',
      loginLog: 'Journal de connexion',
    },
    profile: {
      title: 'Profil',
      info: 'Informations personnelles',
      settings: 'Paramètres',
      security: 'Sécurité',
    },
    // Zone de recherche
    searchPlaceholder: 'Entrez le nom du menu',
    statusPlaceholder: 'Sélectionnez le statut',
    
    // Types de menu
    directory: 'Répertoire',
    menu: 'Menu',
    button: 'Bouton',
    
    // Champs du formulaire
    name: 'Nom du menu',
    namePlaceholder: 'Entrez le nom du menu',
    nameRequired: 'Le nom du menu est requis',
    nameLength: 'La longueur du nom du menu doit être comprise entre 2 et 50 caractères',
    parentMenu: 'Menu parent',
    parentMenuPlaceholder: 'Sélectionnez le menu parent',
    selectParent: 'Veuillez sélectionner le menu parent',
    icon: 'Icône',
    iconPlaceholder: 'Sélectionnez une icône',
    type: 'Type',
    typeRequired: 'Le type est requis',
    typePlaceholder: 'Sélectionnez le type',
    orderNum: 'Ordre',
    orderNumPlaceholder: 'Entrez le numéro d\'ordre',
    path: 'Chemin de route',
    pathPlaceholder: 'Entrez le chemin de route',
    component: 'Chemin du composant',
    componentPlaceholder: 'Entrez le chemin du composant',
    permission: 'Permission',
    permissionPlaceholder: 'Entrez l\'identifiant de permission',
    isVisible: 'Visible',
    isCache: 'Cache',
    isExternal: 'Lien externe',
    status: 'Statut',
    
    // Boutons d'opération
    add: 'Ajouter un menu',
    edit: 'Modifier le menu',
    delete: 'Supprimer le menu',
    
    // Messages d'opération
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer ce menu ?',
    deleteSuccess: 'Suppression réussie',
    addSuccess: 'Ajout réussi',
    editSuccess: 'Modification réussie',
    
    // Messages de validation
    pathRequired: 'Le chemin de route est requis',
    componentRequired: 'Le chemin du composant est requis',
    orderNumRequired: 'Le numéro d\'ordre est requis',
    statusChangeSuccess: 'Statut modifié avec succès',
    visibleChangeSuccess: 'Visibilité modifiée avec succès',
    rootMenu: 'Menu racine',
    expandAll: 'Tout développer',
    collapseAll: 'Tout réduire',
    
    // Éléments supplémentaires
    selectIcon: 'Sélectionner une icône',
    addSub: 'Ajouter un sous-menu',
    confirmDelete: 'Êtes-vous sûr de supprimer ce menu ? Cela supprimera également ses sous-menus.',
    
    // Infos de validation
    idRequired: 'L\'ID du menu est requis',
    invalidData: 'Données de menu invalides',
    hasChildrenTitle: 'Avertissement de suppression',
    hasChildrenContent: 'Ce menu contient des sous-menus, êtes-vous sûr de vouloir le supprimer?',
    deleteConfirmContent: 'Êtes-vous sûr de vouloir supprimer le menu {name}?',
    emptyData: 'Aucune donnée de menu',
  },
  error: {
    notFound: 'Page non trouvée',
    notFoundDescription: 'Désolé, la page que vous avez visitée n\'existe pas ou a été supprimée',
    serverError: 'Erreur du serveur',
    serverErrorDescription: 'Désolé, une erreur s\'est produite sur le serveur',
    networkError: 'Erreur réseau',
    networkErrorDescription: 'Erreur de connexion réseau, veuillez vérifier votre réseau',
    goBack: 'Retour',
    goHome: 'Accueil',
    unknown: 'Erreur inconnue, veuillez réessayer plus tard',
    apiResponse: 'Erreur de réponse du serveur, veuillez réessayer plus tard',
    validation: 'Échec de validation du formulaire, veuillez vérifier vos entrées',
    fieldValidation: 'Échec de validation du champ {field}',
    timeout: 'Délai d\'attente de la requête, veuillez vérifier votre connexion réseau',
    network: 'Échec de la connexion réseau, veuillez vérifier vos paramètres réseau',
    networkGeneral: 'Erreur réseau, veuillez réessayer plus tard',
    operationFailed: 'Échec de l\'opération',
    errorCode: '[{code}] {message}',
    apiTitle: 'Échec de l\'opération',
    networkTitle: 'Erreur réseau',
    errorType: 'Type d\'erreur : {type}',
    errorMessage: 'Message d\'erreur : {message}',
    errorDetail: 'Détails de l\'erreur :',
  },
  dashboard: {
    welcomeTitle: 'Bienvenue, {username}',
    welcomeInfo: 'Bienvenue dans le système d\'administration, où vous pouvez gérer toutes les fonctions et données du système.',
    lastLoginTime: 'Dernière connexion',
    totalUsers: 'Total des utilisateurs',
    totalFiles: 'Total des fichiers',
    totalNotifications: 'Total des notifications',
    systemUptime: 'Temps de fonctionnement du système',
    days: 'jours',
    userGrowth: 'Tendance de croissance des utilisateurs',
    userGrowthDesc: 'Le graphique de tendance de croissance des utilisateurs sera affiché ici',
    systemStatus: 'État du système',
    systemStatusDesc: 'Le graphique d\'état du système sera affiché ici',
    recentActivity: 'Activité récente',
    activity: {
      login: 's\'est connecté à',
      logout: 's\'est déconnecté de',
      upload: 'a téléchargé',
      download: 'a téléchargé',
      create: 'a créé',
      update: 'a mis à jour',
      delete: 'a supprimé',
      newUser: 'nouvel utilisateur',
      systemConfig: 'configuration système',
    },
    statistics: {
      title: 'Statistiques',
      today: 'Aujourd\'hui',
      week: 'Cette semaine',
      month: 'Ce mois',
      year: 'Cette année',
      totalVisits: 'Total des visites',
      totalOrders: 'Total des commandes',
      totalRevenue: 'Revenu total',
      totalProducts: 'Total des produits',
      totalCustomers: 'Total des clients',
      totalComments: 'Total des commentaires',
      totalLikes: 'Total des likes',
      totalShares: 'Total des partages',
      totalDownloads: 'Total des téléchargements',
      totalUploads: 'Total des téléchargements',
      totalMessages: 'Total des messages',
      totalTasks: 'Total des tâches',
      totalProjects: 'Total des projets',
      totalReports: 'Total des rapports',
      totalAlerts: 'Total des alertes',
      totalWarnings: 'Total des avertissements',
      totalErrors: 'Total des erreurs'
    },
    charts: {
      title: 'Graphiques',
      userTrend: 'Tendance des utilisateurs',
      revenueTrend: 'Tendance des revenus',
      orderTrend: 'Tendance des commandes',
      productTrend: 'Tendance des produits',
      customerTrend: 'Tendance des clients',
      visitTrend: 'Tendance des visites',
      downloadTrend: 'Tendance des téléchargements',
      uploadTrend: 'Tendance des téléchargements',
      messageTrend: 'Tendance des messages',
      taskTrend: 'Tendance des tâches',
      projectTrend: 'Tendance des projets',
      reportTrend: 'Tendance des rapports',
      alertTrend: 'Tendance des alertes',
      warningTrend: 'Tendance des avertissements',
      errorTrend: 'Tendance des erreurs',
      pieChart: 'Graphique en camembert',
      barChart: 'Graphique en barres',
      lineChart: 'Graphique en ligne',
      areaChart: 'Graphique en aire',
      scatterChart: 'Graphique en nuage de points',
      radarChart: 'Graphique en radar',
      gaugeChart: 'Graphique en jauge',
      funnelChart: 'Graphique en entonnoir',
      mapChart: 'Graphique en carte',
      treeChart: 'Graphique en arbre',
      sunburstChart: 'Graphique en soleil',
      treemapChart: 'Graphique en carte d\'arbre',
      boxplotChart: 'Graphique en boîte à moustaches',
      candlestickChart: 'Graphique en chandelier',
      effectScatterChart: 'Graphique en nuage de points avec effet',
      themeRiverChart: 'Graphique en rivière thématique',
      calendarChart: 'Graphique en calendrier',
      customChart: 'Graphique personnalisé'
    },
    widgets: {
      title: 'Widgets',
      quickActions: 'Actions rapides',
      recentFiles: 'Fichiers récents',
      recentMessages: 'Messages récents',
      recentTasks: 'Tâches récentes',
      recentProjects: 'Projets récents',
      recentReports: 'Rapports récents',
      recentAlerts: 'Alertes récentes',
      recentWarnings: 'Avertissements récents',
      recentErrors: 'Erreurs récentes',
      systemInfo: 'Informations système',
      serverStatus: 'État du serveur',
      databaseStatus: 'État de la base de données',
      cacheStatus: 'État du cache',
      queueStatus: 'État de la file d\'attente',
      jobStatus: 'État des tâches',
      logStatus: 'État des journaux',
      backupStatus: 'État des sauvegardes',
      securityStatus: 'État de la sécurité',
      performanceStatus: 'État des performances',
      resourceStatus: 'État des ressources',
      networkStatus: 'État du réseau',
      storageStatus: 'État du stockage',
      serviceStatus: 'État des services',
      processStatus: 'État des processus',
      threadStatus: 'État des threads',
      memoryStatus: 'État de la mémoire',
      cpuStatus: 'État du CPU',
      diskStatus: 'État du disque',
      networkTraffic: 'Trafic réseau',
      systemLoad: 'Charge système',
      memoryUsage: 'Utilisation de la mémoire',
      cpuUsage: 'Utilisation du CPU',
      diskUsage: 'Utilisation du disque',
      networkUsage: 'Utilisation du réseau',
      processCount: 'Nombre de processus',
      threadCount: 'Nombre de threads',
      connectionCount: 'Nombre de connexions',
      requestCount: 'Nombre de requêtes',
      responseTime: 'Temps de réponse',
      errorRate: 'Taux d\'erreurs',
      successRate: 'Taux de succès',
      uptime: 'Temps de fonctionnement',
      downtime: 'Temps d\'arrêt',
      maintenance: 'Maintenance',
      backup: 'Sauvegarde',
      restore: 'Restauration',
      update: 'Mise à jour',
      upgrade: 'Mise à niveau',
      restart: 'Redémarrage',
      shutdown: 'Arrêt',
      start: 'Démarrage',
      stop: 'Arrêt',
      pause: 'Pause',
      resume: 'Reprise',
      refresh: 'Actualisation',
      clear: 'Nettoyage',
      optimize: 'Optimisation',
      repair: 'Réparation',
      validate: 'Validation',
      verify: 'Vérification',
      monitor: 'Surveillance',
      log: 'Journal',
      report: 'Rapport',
      alert: 'Alerte',
      warning: 'Avertissement',
      error: 'Erreur',
      info: 'Information',
      debug: 'Débogage',
      trace: 'Trace',
      profile: 'Profil',
      benchmark: 'Benchmark',
      test: 'Test',
      deploy: 'Déploiement',
      rollback: 'Annulation',
      import: 'Import',
      export: 'Export',
      sync: 'Synchronisation'
    }
  },
  // Gestion des utilisateurs
  user: {
    // Zone de recherche
    keyword: 'Mot-clé',
    searchKeywordPlaceholder: 'Entrez le nom d\'utilisateur/surnom/téléphone',
    selectDeptPlaceholder: 'Sélectionnez le département',
    selectStatusPlaceholder: 'Sélectionnez le statut',
    startDate: 'Date de début',
    endDate: 'Date de fin',
    
    // Statut
    enabled: 'Activé',
    disabled: 'Désactivé',
    
    // Colonnes du tableau
    username: 'Nom d\'utilisateur',
    nickname: 'Surnom',
    password: 'Mot de passe',
    dept: 'Département',
    phone: 'Téléphone',
    email: 'Email',
    status: 'Statut',
    createTime: 'Date de création',
    emptyData: 'Aucune donnée utilisateur disponible',
    
    // Formulaire
    add: 'Ajouter un utilisateur',
    edit: 'Modifier l\'utilisateur',
    usernamePlaceholder: 'Entrez le nom d\'utilisateur',
    nicknamePlaceholder: 'Entrez le surnom',
    passwordPlaceholder: 'Entrez le mot de passe',
    deptPlaceholder: 'Sélectionnez le département',
    phonePlaceholder: 'Entrez le numéro de téléphone',
    emailPlaceholder: 'Entrez l\'adresse email',
    roles: 'Rôles',
    selectRoles: 'Sélectionnez les rôles',
    
    // Validation du formulaire
    usernameRequired: 'Le nom d\'utilisateur est requis',
    usernameLength: 'Le nom d\'utilisateur doit contenir entre 4 et 20 caractères',
    usernamePattern: 'Le nom d\'utilisateur ne peut contenir que des lettres, des chiffres et des underscores',
    nicknameRequired: 'Le surnom est requis',
    nicknameLength: 'Le surnom doit contenir entre 2 et 20 caractères',
    nicknamePattern: 'Le surnom ne peut contenir que des caractères chinois, des lettres et des chiffres',
    passwordRequired: 'Le mot de passe est requis',
    passwordLength: 'Le mot de passe doit contenir au moins 6 caractères',
    passwordLetter: 'Le mot de passe doit contenir des lettres',
    passwordNumber: 'Le mot de passe doit contenir des chiffres',
    deptRequired: 'Veuillez sélectionner un département',
    phoneInvalid: 'Veuillez entrer un numéro de téléphone valide',
    emailInvalid: 'Veuillez entrer une adresse email valide',
    
    // Attribution de rôles
    assignRoles: 'Attribuer des rôles',
    availableRoles: 'Rôles disponibles',
    assignedRoles: 'Rôles attribués',
    assignRolesSuccess: 'Rôles attribués avec succès',
    
    // Réinitialisation du mot de passe
    resetPassword: 'Réinitialiser le mot de passe',
    newPassword: 'Nouveau mot de passe',
    confirmPassword: 'Confirmer le mot de passe',
    newPasswordRequired: 'Veuillez entrer un nouveau mot de passe',
    confirmPasswordRequired: 'Veuillez confirmer le mot de passe',
    passwordMismatch: 'Les deux mots de passe ne correspondent pas',
    resetPasswordSuccess: 'Mot de passe réinitialisé avec succès',
    confirmPasswordPlaceholder: 'Veuillez confirmer le mot de passe',
    
    // Messages d'opération
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer cet utilisateur ?',
    batchDeleteConfirm: 'Êtes-vous sûr de vouloir supprimer par lots les utilisateurs sélectionnés ?',
    export: 'Exporter',
  },
  // Gestion des départements
  dept: {
    // Zone de recherche
    searchPlaceholder: 'Entrez le nom du département',
    statusPlaceholder: 'Sélectionnez le statut',
    
    // Champs du formulaire
    name: 'Nom du département',
    namePlaceholder: 'Entrez le nom du département',
    parentDept: 'Département parent',
    parentDeptPlaceholder: 'Sélectionnez le département parent',
    selectParent: 'Veuillez sélectionner le département parent',
    leader: 'Responsable',
    leaderPlaceholder: 'Entrez le nom du responsable',
    phone: 'Téléphone',
    phonePlaceholder: 'Entrez le numéro de téléphone',
    email: 'Email',
    emailPlaceholder: 'Entrez l\'adresse email',
    orderNum: 'Ordre',
    orderNumPlaceholder: 'Entrez le numéro d\'ordre',
    status: 'Statut',
    createTime: 'Date de création',
    
    // Opérations
    add: 'Ajouter un département',
    edit: 'Modifier le département',
    addSub: 'Ajouter un sous-département',
    confirmDelete: 'Êtes-vous sûr de vouloir supprimer ce département ?',
    rootDept: 'Département racine',
    
    // Conseils
    emptyData: 'Aucune donnée de département',
    loadFailed: 'Échec du chargement des données du département',
    
    // Validation
    nameRequired: 'Le nom du département est requis',
    nameLength: 'Le nom du département doit contenir entre 2 et 20 caractères',
    parentRequired: 'Le département parent est requis',
    phoneFormat: 'Veuillez entrer un numéro de téléphone valide',
    emailFormat: 'Veuillez entrer une adresse email valide',
    orderRequired: 'Le numéro d\'ordre est requis',
    orderNumber: 'L\'ordre doit être un nombre',
    expandAll: 'Tout développer',
    collapseAll: 'Tout réduire',
    hasChildrenCannotDelete: 'Ce département a des sous-départements et ne peut pas être supprimé',
    hasUsersCannotDelete: 'Ce département a des utilisateurs et ne peut pas être supprimé',
    confirmDeleteContent: 'Êtes-vous sûr de supprimer le département {name} ?',
  },
  // Gestion des rôles
  role: {
    name: 'Nom du rôle',
    code: 'Code du rôle',
    sort: 'Tri',
    remark: 'Remarque',
    namePlaceholder: 'Entrez le nom du rôle',
    codePlaceholder: 'Entrez le code du rôle',
    sortPlaceholder: 'Entrez le numéro de tri',
    sortNumber: 'Le tri doit être un nombre',
    
    // Opérations
    add: 'Ajouter un rôle',
    edit: 'Modifier le rôle',
    delete: 'Supprimer le rôle',
    assignPermissions: 'Attribuer les permissions',
    
    // Messages
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer ce rôle ?',
    deleteConfirmTitle: 'Confirmation de suppression',
    deleteConfirmContent: 'Êtes-vous sûr de vouloir supprimer le rôle {name} ? Cette action ne peut pas être annulée !',
    deleteSuccess: 'Suppression réussie',
    addSuccess: 'Ajout réussi',
    editSuccess: 'Modification réussie',
    assignSuccess: 'Permissions attribuées avec succès',
    status: 'Statut',
    createTime: 'Date de création',
    batchDeleteSuccess: 'Rôles supprimés avec succès',
    assignPermissionSuccess: 'Permissions attribuées avec succès',
    
    // Validation du formulaire
    nameRequired: 'Le nom du rôle est requis',
    codeRequired: 'Le code du rôle est requis',
    sortRequired: 'Le numéro d\'ordre est requis',
    nameLength: 'Le nom du rôle doit contenir entre 2 et 50 caractères',
    codeLength: 'Le code du rôle doit contenir entre 2 et 100 caractères',
    
    // Recherche
    keyword: 'Mot-clé',
    statusPlaceholder: 'Veuillez sélectionner le statut',
    searchKeywordPlaceholder: 'Veuillez saisir le nom ou le code du rôle',
    confirmBatchDelete: 'Êtes-vous sûr de vouloir supprimer par lots les rôles sélectionnés ? Cette action ne peut pas être annulée !',
    selectItemFirst: 'Veuillez d\'abord sélectionner des rôles',
    fetchPermissionsFailed: 'Échec de la récupération de la liste des permissions',
    noRoleSelected: 'Aucun rôle sélectionné',
    emptyData: 'Aucune donnée de rôle',
    loadFailed: 'Échec du chargement des données de rôle',
    assignPermissionsFailed: 'Échec de l\'attribution des permissions',
    
    // Permissions
    invalidRoleId: 'ID de rôle invalide',
    permissionTreeEmpty: 'L\'arbre des permissions est vide',
    permissionDataEmpty: 'Les données de permission sont vides',
    assignPermissionsSuccess: 'Permissions attribuées avec succès',
  },
  // Configuration Management
  config: {
    name: 'Nom de la configuration',
    key: 'Clé de la configuration',
    value: 'Valeur de la configuration',
    type: 'Type',
    description: 'Description',
    status: 'Statut',
    system: 'Système',
    custom: 'Personnalisé',
    enabled: 'Activé',
    disabled: 'Désactivé',
    createTime: 'Date de création',
    editConfig: 'Modifier la configuration',
    addConfig: 'Ajouter une configuration',
    deleteConfig: 'Supprimer la configuration',
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer cette configuration?',
    nameRequired: 'Le nom de la configuration est requis',
    nameLength: 'Le nom de la configuration doit contenir entre 2 et 50 caractères',
    namePattern: 'Le nom de la configuration ne peut contenir que des lettres, des chiffres, des underscores et des caractères chinois',
    keyRequired: 'La clé de configuration est requise',
    keyLength: 'La clé de configuration doit contenir entre 2 et 100 caractères',
    keyPattern: 'La clé de configuration ne peut contenir que des lettres, des chiffres et des underscores',
    valueRequired: 'La valeur de configuration est requise',
    valueLength: 'La valeur de configuration ne peut pas dépasser 500 caractères',
    typeRequired: 'Le type de configuration est requis',
    namePlaceholder: 'Veuillez entrer le nom de la configuration',
    keyPlaceholder: 'Veuillez entrer la clé de configuration',
    valuePlaceholder: 'Veuillez entrer la valeur de configuration',
    typePlaceholder: 'Veuillez sélectionner le type de configuration',
    descriptionPlaceholder: 'Veuillez entrer une description',
    searchPlaceholder: 'Rechercher par nom ou clé de configuration',
    addSuccess: 'Configuration ajoutée avec succès',
    editSuccess: 'Configuration modifiée avec succès',
    deleteSuccess: 'Configuration supprimée avec succès',
    batchDeleteSuccess: 'Configurations supprimées avec succès',
    statusChangeSuccess: 'Statut de la configuration modifié avec succès',
    add: 'Ajouter une configuration',
    edit: 'Modifier la configuration',
    delete: 'Supprimer la configuration',
    updateTime: 'Date de mise à jour',
    remark: 'Remarque',
    remarkPlaceholder: 'Veuillez entrer une remarque',
    types: {
      system: 'Système',
      custom: 'Personnalisé'
    },
    statuses: {
      enabled: 'Activé',
      disabled: 'Désactivé'
    }
  },
  // Paramètres système
  setting: {
    title: 'Paramètres système',
    group: 'Groupe de paramètres',
    configName: 'Nom du paramètre',
    configKey: 'Clé du paramètre',
    configValue: 'Valeur du paramètre',
    valueType: 'Type de valeur',
    description: 'Description',
    createTime: 'Date de création',
    updateTime: 'Date de mise à jour',
    remark: 'Remarque',
    remarkPlaceholder: 'Veuillez saisir une remarque',
    nameRequired: 'Le nom du paramètre est requis',
    keyRequired: 'La clé du paramètre est requise',
    valueRequired: 'La valeur du paramètre est requise',
    namePlaceholder: 'Veuillez saisir le nom du paramètre',
    keyPlaceholder: 'Veuillez saisir la clé du paramètre',
    valuePlaceholder: 'Veuillez saisir la valeur du paramètre',
    groupPlaceholder: 'Veuillez sélectionner un groupe de paramètres',
    valueTypePlaceholder: 'Veuillez sélectionner un type de valeur',
    descriptionPlaceholder: 'Veuillez saisir une description',
    add: 'Ajouter un paramètre',
    edit: 'Modifier le paramètre',
    delete: 'Supprimer le paramètre',
    refresh: 'Actualiser',
    search: 'Rechercher',
    reset: 'Réinitialiser',
    selectGroup: 'Sélectionner un groupe',
    addConfig: 'Ajouter un paramètre',
    editConfig: 'Modifier le paramètre',
    addGroup: 'Ajouter un groupe',
    editGroup: 'Modifier le groupe',
    deleteGroup: 'Supprimer le groupe',
    groupName: 'Nom du groupe',
    groupNameRequired: 'Le nom du groupe est requis',
    groupNamePlaceholder: 'Veuillez saisir le nom du groupe',
    confirmDelete: 'Êtes-vous sûr de vouloir supprimer ce paramètre ?',
    confirmDeleteGroup: 'Êtes-vous sûr de vouloir supprimer ce groupe ? Cela supprimera également tous les paramètres de ce groupe.',
    deleteSuccess: 'Suppression réussie',
    addSuccess: 'Ajout réussi',
    editSuccess: 'Modification réussie',
    importSuccess: 'Importation réussie',
    exportSuccess: 'Exportation réussie',
    invalidData: 'Données invalides',
    invalidJson: 'Format JSON invalide',
    invalidValueType: 'Type de valeur invalide',
    string: 'Chaîne de caractères',
    number: 'Nombre',
    boolean: 'Booléen',
    json: 'JSON',
    array: 'Tableau',
    status: 'Statut',
    enabled: 'Activé',
    disabled: 'Désactivé',
    import: 'Importer',
    export: 'Exporter',
    isBuiltin: 'Est intégré',
    builtIn: 'Intégré',
    custom: 'Personnalisé',
    cacheKey: 'Clé de cache',
    clearCache: 'Vider le cache',
    clearCacheSuccess: 'Cache vidé avec succès',
    clearCacheFailed: 'Échec du vidage du cache',
    config: 'Configuration',
    deleteConfigConfirm: 'Êtes-vous sûr de vouloir supprimer ce paramètre ?',
    groupCode: 'Code du groupe',
    groupCodeRequired: 'Le code du groupe est requis',
    groupCodePattern: 'Le code du groupe ne peut contenir que des lettres, des chiffres et des underscores',
    groupCodePlaceholder: 'Veuillez saisir le code du groupe',
    groupIcon: 'Icône du groupe',
    groupIconRequired: 'L\'icône du groupe est requise',
    groupIconPlaceholder: 'Veuillez sélectionner une icône',
    groupSort: 'Ordre du groupe',
    groupSortRequired: 'L\'ordre du groupe est requis',
    iconSetting: 'Icône de paramètre',
    iconSystem: 'Icône système',
    iconMail: 'Icône mail',
    iconFile: 'Icône fichier',
    iconSecurity: 'Icône sécurité',
    configNameLength: 'Le nom du paramètre doit contenir entre 2 et 50 caractères',
    configKeyPattern: 'La clé du paramètre ne peut contenir que des lettres, des chiffres et des underscores',
    groupRequired: 'Le groupe est requis',
    configNameRequired: 'Le nom du paramètre est requis',
    configKeyRequired: 'La clé du paramètre est requise',
    valueTypeRequired: 'Le type de valeur est requis',
    configValueRequired: 'La valeur du paramètre est requise',
    groupNameLength: 'Le nom du groupe doit contenir entre 2 et 50 caractères'
  },
  // Gestion des dictionnaires
  dict: {
    name: 'Nom du dictionnaire',
    type: 'Type de dictionnaire',
    status: 'Statut',
    enabled: 'Activé',
    disabled: 'Désactivé',
    createTime: 'Date de création',
    editDict: 'Modifier le dictionnaire',
    addDict: 'Ajouter un dictionnaire',
    deleteDict: 'Supprimer le dictionnaire',
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer ce dictionnaire?',
    dictData: 'Données du dictionnaire',
    dictDetail: 'Détails du dictionnaire',
    label: 'Étiquette',
    value: 'Valeur',
    sort: 'Tri',
    defaultStatus: 'Par défaut',
    yes: 'Oui',
    no: 'Non',
    nameRequired: 'Le nom du dictionnaire est requis',
    nameLength: 'Le nom du dictionnaire doit contenir entre 2 et 50 caractères',
    namePattern: 'Le nom du dictionnaire ne peut contenir que des lettres, des chiffres, des underscores et des caractères chinois',
    typeRequired: 'Le type de dictionnaire est requis',
    typeLength: 'Le type de dictionnaire doit contenir entre 2 et 100 caractères',
    typePattern: 'Le type de dictionnaire ne peut contenir que des lettres, des chiffres et des underscores',
    labelRequired: 'L\'étiquette est requise',
    labelLength: 'L\'étiquette doit contenir entre 2 et 50 caractères',
    valueRequired: 'La valeur est requise',
    valueLength: 'La valeur doit contenir entre 2 et 100 caractères',
    sortRequired: 'Le numéro d\'ordre est requis',
    sortLength: 'Le numéro d\'ordre doit être un nombre entier',
    namePlaceholder: 'Veuillez entrer le nom du dictionnaire',
    typePlaceholder: 'Veuillez entrer le type de dictionnaire',
    labelPlaceholder: 'Veuillez entrer l\'étiquette',
    valuePlaceholder: 'Veuillez entrer la valeur',
    sortPlaceholder: 'Veuillez entrer le numéro d\'ordre',
    searchPlaceholder: 'Rechercher par nom ou type de dictionnaire',
    addSuccess: 'Dictionnaire ajouté avec succès',
    editSuccess: 'Dictionnaire modifié avec succès',
    deleteSuccess: 'Dictionnaire supprimé avec succès',
    batchDeleteSuccess: 'Dictionnaires supprimés avec succès',
    statusChangeSuccess: 'Statut du dictionnaire modifié avec succès',
    add: 'Ajouter un dictionnaire',
    edit: 'Modifier le dictionnaire',
    delete: 'Supprimer le dictionnaire',
    updateTime: 'Date de mise à jour',
    remark: 'Remarque',
    remarkPlaceholder: 'Veuillez entrer une remarque',
    types: {
      system: 'Système',
      custom: 'Personnalisé'
    },
    statuses: {
      enabled: 'Activé',
      disabled: 'Désactivé'
    }
  },
  // Gestion des fichiers
  file: {
    name: 'Nom du fichier',
    type: 'Type de fichier',
    size: 'Taille du fichier',
    path: 'Chemin du fichier',
    uploadUser: 'Utilisateur de téléchargement',
    uploadTime: 'Heure de téléchargement',
    folder: 'Dossier',
    uploadFile: 'Télécharger un fichier',
    deleteFile: 'Supprimer le fichier',
    deleteConfirm: 'Êtes-vous sûr de vouloir supprimer ce fichier?',
    preview: 'Aperçu',
    download: 'Télécharger',
    createFolder: 'Créer un dossier',
    search: 'Rechercher un fichier',
    move: 'Déplacer',
    rename: 'Renommer',
    createTime: 'Date de création',
    lastUpdateTime: 'Dernière mise à jour',
    noFile: 'Aucun fichier',
    uploadSuccess: 'Fichier téléchargé avec succès',
    uploadFailed: 'Échec du téléchargement du fichier',
    deleteSuccess: 'Fichier supprimé avec succès',
    deleteFailed: 'Échec de la suppression du fichier',
    moveSuccess: 'Fichier déplacé avec succès',
    moveFailed: 'Échec du déplacement du fichier',
    renameSuccess: 'Fichier renommé avec succès',
    renameFailed: 'Échec du renommage du fichier',
    createFolderSuccess: 'Dossier créé avec succès',
    createFolderFailed: 'Échec de la création du dossier',
    fileTooLarge: 'Le fichier est trop volumineux',
    fileTypeNotAllowed: 'Type de fichier non autorisé',
    fileNameRequired: 'Le nom du fichier est requis',
    fileNameLength: 'Le nom du fichier doit contenir entre 2 et 100 caractères',
    fileNamePattern: 'Le nom du fichier ne peut contenir que des lettres, des chiffres, des underscores, des tirets et des points',
    folderNameRequired: 'Le nom du dossier est requis',
    folderNameLength: 'Le nom du dossier doit contenir entre 2 et 50 caractères',
    folderNamePattern: 'Le nom du dossier ne peut contenir que des lettres, des chiffres, des underscores et des tirets',
    uploadProgress: 'Progression du téléchargement: {percent}%',
    uploadComplete: 'Téléchargement terminé',
    uploadError: 'Erreur de téléchargement',
    fileSizeLimit: 'La taille du fichier ne peut pas dépasser {size}',
    allowedFileTypes: 'Types de fichiers autorisés: {types}',
    dragAndDrop: 'Glissez et déposez les fichiers ici, ou cliquez pour sélectionner',
    selectFile: 'Sélectionner un fichier',
    selectFolder: 'Sélectionner un dossier',
    currentPath: 'Chemin actuel',
    parentFolder: 'Dossier parent',
    rootFolder: 'Dossier racine',
    refresh: 'Actualiser',
    sort: 'Trier',
    sortByName: 'Trier par nom',
    sortBySize: 'Trier par taille',
    sortByDate: 'Trier par date',
    viewMode: 'Mode d\'affichage',
    listView: 'Vue liste',
    gridView: 'Vue grille',
    thumbnailView: 'Vue miniature',
    fileName: 'Nom du fichier',
    uploader: 'Téléchargeur',
    fileType: 'Type de fichier',
    image: 'Image',
    document: 'Document',
    video: 'Vidéo',
    audio: 'Audio',
    other: 'Autre',
    searchPlaceholder: 'Rechercher par nom de fichier ou description',
    typePlaceholder: 'Sélectionner le type de fichier',
    emptyData: 'Aucune donnée de fichier',
    copyLink: 'Copier le lien',
    copyLinkSuccess: 'Lien copié avec succès'
  },
  // Gestion des notifications
  notification: {
    title: 'Notification',
    type: 'Type',
    content: 'Contenu',
    status: 'Statut',
    createTime: 'Date d\'envoi',
    readTime: 'Date de lecture',
    sender: 'Expéditeur',
    receiver: 'Destinataire',
    level: 'Niveau',
    levelNormal: 'Normal',
    levelImportant: 'Important',
    levelUrgent: 'Urgent',
    statusRead: 'Lu',
    statusUnread: 'Non lu',
    send: 'Envoyer une notification',
    detail: 'Détail de la notification',
    markRead: 'Marquer comme lu',
    markAllRead: 'Tout marquer comme lu',
    clearRead: 'Effacer les notifications lues',
    batchMarkReadSuccess: 'Notifications marquées comme lues avec succès',
    markReadSuccess: 'Notification marquée comme lue avec succès',
    markAllReadSuccess: 'Toutes les notifications marquées comme lues avec succès',
    clearReadSuccess: 'Notifications lues effacées avec succès',
    deleteSuccess: 'Notification supprimée avec succès',
    batchDeleteSuccess: 'Notifications supprimées avec succès',
    sendSuccess: 'Notification envoyée avec succès',
    confirmDelete: 'Êtes-vous sûr de vouloir supprimer cette notification ?',
    relatedLink: 'Lien associé',
    searchPlaceholder: 'Rechercher le titre de la notification',
    typePlaceholder: 'Sélectionner le type de notification',
    statusPlaceholder: 'Sélectionner le statut',
    levelPlaceholder: 'Sélectionner le niveau',
    titlePlaceholder: 'Veuillez saisir le titre de la notification',
    contentPlaceholder: 'Veuillez saisir le contenu de la notification',
    receiverPlaceholder: 'Veuillez sélectionner le destinataire',
    linkPlaceholder: 'Veuillez saisir le lien associé (optionnel)',
    titleRequired: 'Veuillez saisir le titre de la notification',
    typeRequired: 'Veuillez sélectionner le type de notification',
    levelRequired: 'Veuillez sélectionner le niveau',
    receiverRequired: 'Veuillez sélectionner le destinataire',
    contentRequired: 'Veuillez saisir le contenu de la notification',
    titleLength: 'Le titre ne peut pas dépasser 100 caractères',
    contentLength: 'Le contenu ne peut pas dépasser 500 caractères',
    allUser: 'Tous les utilisateurs',
    selectUser: 'Sélectionner des utilisateurs',
    typeSystem: 'Système',
    typeTask: 'Tâche',
    typeMessage: 'Message',
    searchButton: 'Rechercher',
    resetButton: 'Réinitialiser',
    typeAll: 'Tous les types',
    statusAll: 'Tous les statuts',
    levelAll: 'Tous les niveaux',
    confirmBatchDelete: 'Êtes-vous sûr de vouloir supprimer les notifications sélectionnées ?',
    link: 'Lien associé',
    linkInvalid: 'Veuillez saisir un lien valide',
    batchRead: 'Marquer en lot comme lu',
    batchDelete: 'Suppression en lot',
    add: 'Envoyer une notification',
    typeTodo: 'À faire'
  },
  // Gestion des journaux
  log: {
    // Journal des opérations
    operationLog: {
      title: 'Journal des opérations',
      module: 'Module',
      operation: 'Opération',
      operator: 'Opérateur',
      ip: 'Adresse IP',
      location: 'Localisation',
      status: 'Statut',
      success: 'Succès',
      failed: 'Échec',
      createTime: 'Date d\'opération',
      duration: 'Durée',
      requestMethod: 'Méthode de requête',
      requestUrl: 'URL de requête',
      requestParams: 'Paramètres de requête',
      responseResult: 'Résultat de réponse',
      errorMessage: 'Message d\'erreur',
      searchPlaceholder: 'Rechercher par module, opération ou opérateur',
      modulePlaceholder: 'Sélectionner le module',
      operationPlaceholder: 'Sélectionner l\'opération',
      statusPlaceholder: 'Sélectionner le statut',
      clearLog: 'Effacer le journal',
      clearConfirm: 'Êtes-vous sûr de vouloir effacer le journal des opérations?',
      clearSuccess: 'Journal des opérations effacé avec succès',
      clearFailed: 'Échec de l\'effacement du journal des opérations',
      export: 'Exporter',
      exportSuccess: 'Journal des opérations exporté avec succès',
      exportFailed: 'Échec de l\'exportation du journal des opérations',
      detail: 'Détails de l\'opération',
      detailTitle: 'Détails de l\'opération',
      detailClose: 'Fermer',
      detailCopy: 'Copier',
      detailCopySuccess: 'Copié avec succès',
      detailCopyFailed: 'Échec de la copie'
    },
    // Journal de connexion
    loginLog: {
      title: 'Journal de connexion',
      username: 'Nom d\'utilisateur',
      ip: 'Adresse IP',
      location: 'Localisation',
      browser: 'Navigateur',
      os: 'Système d\'exploitation',
      status: 'Statut',
      success: 'Succès',
      failed: 'Échec',
      createTime: 'Date de connexion',
      logoutTime: 'Date de déconnexion',
      duration: 'Durée de connexion',
      message: 'Message',
      searchPlaceholder: 'Rechercher par nom d\'utilisateur ou adresse IP',
      statusPlaceholder: 'Sélectionner le statut',
      clearLog: 'Effacer le journal',
      clearConfirm: 'Êtes-vous sûr de vouloir effacer le journal de connexion?',
      clearSuccess: 'Journal de connexion effacé avec succès',
      clearFailed: 'Échec de l\'effacement du journal de connexion',
      export: 'Exporter',
      exportSuccess: 'Journal de connexion exporté avec succès',
      exportFailed: 'Échec de l\'exportation du journal de connexion',
      detail: 'Détails de la connexion',
      detailTitle: 'Détails de la connexion',
      detailClose: 'Fermer',
      detailCopy: 'Copier',
      detailCopySuccess: 'Copié avec succès',
      detailCopyFailed: 'Échec de la copie'
    }
  },
  // Centre personnel
  profile: {
    title: 'Centre personnel',
    basicInfo: 'Informations de base',
    security: 'Sécurité',
    notification: 'Notification',
    preference: 'Préférences',
    avatar: 'Avatar',
    username: 'Nom d\'utilisateur',
    nickname: 'Surnom',
    email: 'Email',
    phone: 'Téléphone',
    gender: 'Genre',
    male: 'Homme',
    female: 'Femme',
    other: 'Autre',
    birthday: 'Date de naissance',
    address: 'Adresse',
    bio: 'Biographie',
    lastLoginTime: 'Dernière connexion',
    lastLoginIp: 'Dernière IP de connexion',
    lastLoginLocation: 'Dernière localisation de connexion',
    accountSecurity: 'Sécurité du compte',
    password: 'Mot de passe',
    oldPassword: 'Ancien mot de passe',
    newPassword: 'Nouveau mot de passe',
    confirmPassword: 'Confirmer le mot de passe',
    passwordStrength: 'Force du mot de passe',
    weak: 'Faible',
    medium: 'Moyen',
    strong: 'Fort',
    passwordLetter: 'Le mot de passe doit contenir des lettres',
    passwordNumber: 'Le mot de passe doit contenir des chiffres',
    passwordSpecial: 'Le mot de passe doit contenir des caractères spéciaux',
    passwordMatch: 'Les deux mots de passe ne correspondent pas',
    changePassword: 'Changer le mot de passe',
    changePasswordSuccess: 'Mot de passe modifié avec succès',
    changePasswordFailed: 'Échec de la modification du mot de passe',
    twoFactorAuth: 'Authentification à deux facteurs',
    twoFactorAuthEnabled: 'Authentification à deux facteurs activée',
    twoFactorAuthDisabled: 'Authentification à deux facteurs désactivée',
    enableTwoFactorAuth: 'Activer l\'authentification à deux facteurs',
    disableTwoFactorAuth: 'Désactiver l\'authentification à deux facteurs',
    twoFactorAuthSuccess: 'Authentification à deux facteurs modifiée avec succès',
    twoFactorAuthFailed: 'Échec de la modification de l\'authentification à deux facteurs',
    notificationSettings: 'Paramètres de notification',
    emailNotification: 'Notification par email',
    smsNotification: 'Notification par SMS',
    systemNotification: 'Notification système',
    saveSettings: 'Enregistrer les paramètres',
    saveSuccess: 'Paramètres enregistrés avec succès',
    saveFailed: 'Échec de l\'enregistrement des paramètres',
    avatarUpload: 'Télécharger l\'avatar',
    avatarUploadSuccess: 'Avatar téléchargé avec succès',
    avatarUploadFailed: 'Échec du téléchargement de l\'avatar',
    avatarSizeLimit: 'La taille de l\'avatar ne peut pas dépasser 2MB',
    avatarTypeLimit: 'Seules les images JPG, PNG et GIF sont autorisées',
    updateProfile: 'Mettre à jour le profil',
    updateProfileSuccess: 'Profil mis à jour avec succès',
    updateProfileFailed: 'Échec de la mise à jour du profil',
    requiredFields: 'Veuillez remplir tous les champs requis',
    invalidEmail: 'Veuillez entrer une adresse email valide',
    invalidPhone: 'Veuillez entrer un numéro de téléphone valide',
    invalidBirthday: 'Veuillez entrer une date de naissance valide',
    maxBioLength: 'La biographie ne peut pas dépasser 200 caractères',
    maxAddressLength: 'L\'adresse ne peut pas dépasser 100 caractères'
  },
  // 系统监控
  monitor: {
    title: 'Surveillance',
    server: {
      title: 'Surveillance du serveur',
      cpu: 'Utilisation CPU',
      memory: 'Utilisation mémoire',
      disk: 'Utilisation disque',
      network: 'Trafic réseau',
      uptime: 'Temps de fonctionnement',
      load: 'Charge système',
      process: 'Processus',
      thread: 'Threads',
      jvm: {
        title: 'Surveillance JVM',
        heap: 'Mémoire heap',
        nonHeap: 'Mémoire non-heap',
        gc: 'Garbage Collection',
        thread: 'Threads',
        class: 'Chargement des classes',
        runtime: 'Runtime'
      }
    },
    online: {
      title: 'Utilisateurs en ligne',
      username: 'Nom d\'utilisateur',
      ip: 'Adresse IP',
      location: 'Localisation',
      browser: 'Navigateur',
      os: 'Système d\'exploitation',
      loginTime: 'Heure de connexion',
      lastAccessTime: 'Dernière activité',
      forceLogout: 'Déconnexion forcée',
      forceLogoutConfirm: 'Êtes-vous sûr de vouloir forcer la déconnexion de cet utilisateur ?',
      forceLogoutSuccess: 'Déconnexion forcée réussie',
      forceLogoutFailed: 'Échec de la déconnexion forcée'
    },
    cache: {
      title: 'Surveillance du cache',
      name: 'Nom du cache',
      size: 'Taille du cache',
      hitRate: 'Taux de succès',
      missRate: 'Taux d\'échec',
      evictionCount: 'Nombre d\'évictions',
      clear: 'Vider le cache',
      clearConfirm: 'Êtes-vous sûr de vouloir vider ce cache ?',
      clearSuccess: 'Cache vidé avec succès',
      clearFailed: 'Échec du vidage du cache'
    },
    job: {
      title: 'Tâches planifiées',
      name: 'Nom de la tâche',
      group: 'Groupe de tâches',
      cron: 'Expression Cron',
      status: 'Statut',
      lastExecuteTime: 'Dernière exécution',
      nextExecuteTime: 'Prochaine exécution',
      executeCount: 'Nombre d\'exécutions',
      executeResult: 'Résultat d\'exécution',
      executeDuration: 'Durée d\'exécution',
      add: 'Ajouter une tâche',
      edit: 'Modifier la tâche',
      delete: 'Supprimer la tâche',
      pause: 'Mettre en pause',
      resume: 'Reprendre',
      execute: 'Exécuter maintenant',
      log: 'Journal d\'exécution',
      addSuccess: 'Tâche ajoutée avec succès',
      editSuccess: 'Tâche modifiée avec succès',
      deleteSuccess: 'Tâche supprimée avec succès',
      pauseSuccess: 'Tâche mise en pause avec succès',
      resumeSuccess: 'Tâche reprise avec succès',
      executeSuccess: 'Tâche exécutée avec succès',
      nameRequired: 'Veuillez saisir le nom de la tâche',
      groupRequired: 'Veuillez saisir le groupe de tâches',
      cronRequired: 'Veuillez saisir l\'expression Cron',
      cronInvalid: 'Format d\'expression Cron invalide',
      targetRequired: 'Veuillez saisir la cible d\'appel',
      targetInvalid: 'Format de cible d\'appel invalide'
    },
    log: {
      title: 'Journal système',
      level: 'Niveau de log',
      module: 'Module',
      operation: 'Opération',
      operator: 'Opérateur',
      ip: 'Adresse IP',
      location: 'Localisation',
      status: 'Statut',
      createTime: 'Heure d\'opération',
      duration: 'Durée d\'exécution',
      requestMethod: 'Méthode de requête',
      requestUrl: 'URL de requête',
      requestParams: 'Paramètres de requête',
      responseResult: 'Résultat de réponse',
      errorMessage: 'Message d\'erreur',
      clear: 'Vider le journal',
      clearConfirm: 'Êtes-vous sûr de vouloir vider le journal système ?',
      clearSuccess: 'Journal vidé avec succès',
      clearFailed: 'Échec du vidage du journal',
      export: 'Exporter le journal',
      exportSuccess: 'Journal exporté avec succès',
      exportFailed: 'Échec de l\'exportation du journal'
    }
  },
} 